﻿2026-05-13T13:04:57.2184938Z ##[group]Run pnpm --filter @rebno/client test:e2e
2026-05-13T13:04:57.2185592Z [36;1mpnpm --filter @rebno/client test:e2e[0m
2026-05-13T13:04:57.2220570Z shell: /usr/bin/bash -e {0}
2026-05-13T13:04:57.2220968Z env:
2026-05-13T13:04:57.2221345Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-13T13:04:57.2221950Z   STAGING_URL: https://staging.rebno.decidel.com
2026-05-13T13:04:57.2223097Z   STAGING_INVITE_TOKEN: ***
2026-05-13T13:04:57.2223484Z   UAT_ACCOUNT_A: ***
2026-05-13T13:04:57.2223853Z   UAT_PASSWORD_A: ***
2026-05-13T13:04:57.2224183Z   UAT_ACCOUNT_B: ***
2026-05-13T13:04:57.2224559Z   UAT_PASSWORD_B: ***
2026-05-13T13:04:57.2224883Z ##[endgroup]
2026-05-13T13:04:57.5382574Z 
2026-05-13T13:04:57.5383607Z > @rebno/client@0.1.0 test:e2e /home/runner/work/rebno/rebno/apps/client
2026-05-13T13:04:57.5384697Z > playwright test
2026-05-13T13:04:57.5385170Z 
2026-05-13T13:04:58.9790284Z 
2026-05-13T13:04:58.9791370Z Running 24 tests using 1 worker
2026-05-13T13:04:58.9792143Z 
2026-05-13T13:05:11.7948812Z   ✘   1 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (11.1s)
2026-05-13T13:05:25.2451501Z   ✘   2 [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) (retry #1) (11.7s)
2026-05-13T13:05:41.1408178Z   ✘   3 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (14.0s)
2026-05-13T13:05:59.2177072Z   ✘   4 [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) (retry #1) (16.0s)
2026-05-13T13:06:08.7495660Z   ✘   5 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (8.2s)
2026-05-13T13:06:17.2138688Z   ✘   6 [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) (retry #1) (7.2s)
2026-05-13T13:06:27.5993619Z   ✘   7 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:29:1 › floor tiles render and block southern fall-through (9.1s)
2026-05-13T13:06:46.9573844Z   ✘   8 [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:29:1 › floor tiles render and block southern fall-through (retry #1) (18.3s)
2026-05-13T13:07:04.7514683Z   ✘   9 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (15.7s)
2026-05-13T13:07:21.2009586Z   ✘  10 [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) (retry #1) (14.4s)
2026-05-13T13:07:26.7371487Z   ✓  11 [chromium] › test/e2e/cli-08-nameplate-offset.e2e.test.ts:25:1 › nameplate sits above sprite top (D-45) (4.7s)
2026-05-13T13:07:39.5841487Z   ✓  12 [chromium] › test/e2e/cli-08-nameplate.e2e.test.ts:24:1 › CLI-08 nameplate color — local cyan (#00FFFF), remote white (#FFFFFF) (Wave 4 GREEN gate) (12.8s)
2026-05-13T13:07:57.6083553Z   ✘  13 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (17.7s)
2026-05-13T13:08:21.7220419Z   ✘  14 [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) (retry #1) (21.8s)
2026-05-13T13:08:41.5783715Z   ✘  15 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (17.9s)
2026-05-13T13:09:01.7356368Z   ✘  16 [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace (retry #1) (18.1s)
2026-05-13T13:09:10.3025030Z   ✘  17 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (7.5s)
2026-05-13T13:09:18.6414977Z   ✘  18 [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works (retry #1) (7.3s)
2026-05-13T13:09:21.2714715Z   ✓  19 [chromium] › test/e2e/login-contrast.e2e.test.ts:64:3 › LoginScene contrast › heading has ≥ 4.5:1 contrast ratio on #0A0E1A background (1.9s)
2026-05-13T13:09:22.9573622Z   ✓  20 [chromium] › test/e2e/login-contrast.e2e.test.ts:72:3 › LoginScene contrast › username label has ≥ 4.5:1 contrast ratio (1.7s)
2026-05-13T13:09:24.5311320Z   ✓  21 [chromium] › test/e2e/login-contrast.e2e.test.ts:78:3 › LoginScene contrast › password label has ≥ 4.5:1 contrast ratio (1.5s)
2026-05-13T13:09:26.1598033Z   ✓  22 [chromium] › test/e2e/login-contrast.e2e.test.ts:84:3 › LoginScene contrast › username input text has ≥ 4.5:1 contrast ratio (1.6s)
2026-05-13T13:09:28.0891960Z   ✓  23 [chromium] › test/e2e/login-contrast.e2e.test.ts:90:3 › LoginScene contrast › password input text has ≥ 4.5:1 contrast ratio (1.9s)
2026-05-13T13:09:29.8926057Z   ✓  24 [chromium] › test/e2e/login-contrast.e2e.test.ts:96:3 › LoginScene contrast › submit CTA button text has ≥ 4.5:1 contrast ratio (1.8s)
2026-05-13T13:09:31.4772176Z   ✓  25 [chromium] › test/e2e/login-contrast.e2e.test.ts:104:3 › LoginScene contrast › focused input border-color is accent #22D3EE (rgb 34,211,238) (1.6s)
2026-05-13T13:09:42.1017826Z   ✘  26 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (10.2s)
2026-05-13T13:09:53.9752927Z   ✘  27 [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) (retry #1) (10.6s)
2026-05-13T13:09:59.8507690Z   ✓  28 [chromium] › test/e2e/logout.e2e.test.ts:51:3 › Esc menu › canvas click opens menu (D-24 secondary trigger) (5.1s)
2026-05-13T13:10:05.4934522Z   ✓  29 [chromium] › test/e2e/logout.e2e.test.ts:69:3 › Esc menu › Resume closes menu and re-engages movement without navigating (5.6s)
2026-05-13T13:10:11.4475263Z   ✘  30 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (5.6s)
2026-05-13T13:10:30.5174034Z   ✘  31 [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop (retry #1) (18.0s)
2026-05-13T13:10:35.9984481Z   ✓  32 [chromium] › test/e2e/sprite-state.e2e.test.ts:48:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate DOM mirror is visible for self (count >= 1) (4.6s)
2026-05-13T13:10:39.9816277Z   ✓  33 [chromium] › test/e2e/sprite-state.e2e.test.ts:61:3 › sprite-state machine (D-35) + nametag (D-27a) › nameplate text content matches logged-in username (3.9s)
2026-05-13T13:10:48.0870562Z   ✓  34 [chromium] › test/e2e/ws-kill-reconnect.e2e.test.ts:16:1 › WS-kill: login → kill WS → SDK reconnects within grace → canvas still truthy + chat round-trips (8.0s)
2026-05-13T13:10:48.1555856Z 
2026-05-13T13:10:48.1576733Z 
2026-05-13T13:10:48.1594573Z   1) [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-13T13:10:48.1595444Z 
2026-05-13T13:10:48.1597871Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-13T13:10:48.1598379Z 
2026-05-13T13:10:48.1599360Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1600238Z 
2026-05-13T13:10:48.1600613Z     Expected: >= [32m8[39m
2026-05-13T13:10:48.1601173Z     Received:    [31m0[39m
2026-05-13T13:10:48.1601561Z 
2026-05-13T13:10:48.1601801Z       80 |     cameraDelta,
2026-05-13T13:10:48.1605438Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-13T13:10:48.1607426Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-13T13:10:48.1608050Z          |     ^
2026-05-13T13:10:48.1608507Z       83 |
2026-05-13T13:10:48.1609226Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-13T13:10:48.1610181Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-13T13:10:48.1611272Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-13T13:10:48.1612009Z 
2026-05-13T13:10:48.1613276Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1614677Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/test-failed-1.png
2026-05-13T13:10:48.1616544Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1617299Z 
2026-05-13T13:10:48.1618115Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1619708Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/video.webm
2026-05-13T13:10:48.1621073Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1621677Z 
2026-05-13T13:10:48.1622680Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/error-context.md
2026-05-13T13:10:48.1623539Z 
2026-05-13T13:10:48.1624297Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1625468Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-13T13:10:48.1626338Z     Usage:
2026-05-13T13:10:48.1626649Z 
2026-05-13T13:10:48.1627593Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium/trace.zip
2026-05-13T13:10:48.1628644Z 
2026-05-13T13:10:48.1629403Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1630018Z 
2026-05-13T13:10:48.1630722Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1631342Z 
2026-05-13T13:10:48.1631783Z     Error: Camera did not pan: before=(120,160) after=(120,160)
2026-05-13T13:10:48.1632307Z 
2026-05-13T13:10:48.1633511Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1634291Z 
2026-05-13T13:10:48.1634700Z     Expected: >= [32m8[39m
2026-05-13T13:10:48.1635296Z     Received:    [31m0[39m
2026-05-13T13:10:48.1635672Z 
2026-05-13T13:10:48.1635978Z       80 |     cameraDelta,
2026-05-13T13:10:48.1636970Z       81 |     `Camera did not pan: before=(${before.scrollX},${before.scrollY}) after=(${after.scrollX},${after.scrollY})`,
2026-05-13T13:10:48.1637965Z     > 82 |   ).toBeGreaterThanOrEqual(8);
2026-05-13T13:10:48.1638884Z          |     ^
2026-05-13T13:10:48.1639332Z       83 |
2026-05-13T13:10:48.1640013Z       84 |   // 8. Secondary: player moved (position changed on at least one axis).
2026-05-13T13:10:48.1640941Z       85 |   const playerMoved = after.x !== before.x || after.y !== before.y;
2026-05-13T13:10:48.1642017Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/camera-follow.e2e.test.ts:82:5
2026-05-13T13:10:48.1642817Z 
2026-05-13T13:10:48.1643539Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1644834Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1646154Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1646588Z 
2026-05-13T13:10:48.1647194Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1648618Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/video.webm
2026-05-13T13:10:48.1649564Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1649838Z 
2026-05-13T13:10:48.1650314Z     Error Context: test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/error-context.md
2026-05-13T13:10:48.1650793Z 
2026-05-13T13:10:48.1651178Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1651903Z     test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-13T13:10:48.1652660Z     Usage:
2026-05-13T13:10:48.1652845Z 
2026-05-13T13:10:48.1653648Z         pnpm exec playwright show-trace test-results/camera-follow.e2e-Camera-f-1d2af--the-camera-D-29-mandatory--chromium-retry1/trace.zip
2026-05-13T13:10:48.1654234Z 
2026-05-13T13:10:48.1654582Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1654852Z 
2026-05-13T13:10:48.1655501Z   2) [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-13T13:10:48.1655999Z 
2026-05-13T13:10:48.1657971Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-13T13:10:48.1659553Z 
2026-05-13T13:10:48.1659972Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1660575Z 
2026-05-13T13:10:48.1660706Z     Expected: >= [32m3[39m
2026-05-13T13:10:48.1660984Z     Received:    [31m1[39m
2026-05-13T13:10:48.1661129Z 
2026-05-13T13:10:48.1661218Z       67 |     unique.size,
2026-05-13T13:10:48.1661830Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-13T13:10:48.1662355Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-13T13:10:48.1664745Z          |     ^
2026-05-13T13:10:48.1665059Z       70 |
2026-05-13T13:10:48.1665566Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-13T13:10:48.1666159Z       72 |   for (const f of unique) {
2026-05-13T13:10:48.1666882Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-13T13:10:48.1667402Z 
2026-05-13T13:10:48.1668132Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1669558Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-13T13:10:48.1670833Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1671270Z 
2026-05-13T13:10:48.1671875Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1673085Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/video.webm
2026-05-13T13:10:48.1674239Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1674641Z 
2026-05-13T13:10:48.1675327Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-13T13:10:48.1676043Z 
2026-05-13T13:10:48.1676705Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1677812Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1678530Z     Usage:
2026-05-13T13:10:48.1678692Z 
2026-05-13T13:10:48.1679444Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1680217Z 
2026-05-13T13:10:48.1680866Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1681274Z 
2026-05-13T13:10:48.1681846Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1682310Z 
2026-05-13T13:10:48.1685961Z     Error: Expected ≥3 distinct frame keys during 1s hold; observed 1 (samples=0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000)
2026-05-13T13:10:48.1688986Z 
2026-05-13T13:10:48.1689724Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1690358Z 
2026-05-13T13:10:48.1690568Z     Expected: >= [32m3[39m
2026-05-13T13:10:48.1690993Z     Received:    [31m1[39m
2026-05-13T13:10:48.1691219Z 
2026-05-13T13:10:48.1691359Z       67 |     unique.size,
2026-05-13T13:10:48.1692339Z       68 |     `Expected ≥3 distinct frame keys during 1s hold; observed ${unique.size} (samples=${samples.join(',')})`,
2026-05-13T13:10:48.1693366Z     > 69 |   ).toBeGreaterThanOrEqual(3);
2026-05-13T13:10:48.1693782Z          |     ^
2026-05-13T13:10:48.1694084Z       70 |
2026-05-13T13:10:48.1694603Z       71 |   // 4. Each observed frame must match a NaviRun* pattern (sanity).
2026-05-13T13:10:48.1695447Z       72 |   for (const f of unique) {
2026-05-13T13:10:48.1696174Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-anim.e2e.test.ts:69:5
2026-05-13T13:10:48.1696692Z 
2026-05-13T13:10:48.1697368Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1698499Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1699674Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1700083Z 
2026-05-13T13:10:48.1700666Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1701786Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-13T13:10:48.1703300Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1703831Z 
2026-05-13T13:10:48.1704630Z     Error Context: test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-13T13:10:48.1705483Z 
2026-05-13T13:10:48.1706204Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1707323Z     test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1708117Z     Usage:
2026-05-13T13:10:48.1708285Z 
2026-05-13T13:10:48.1709071Z         pnpm exec playwright show-trace test-results/cli-08-anim.e2e-CLI-08-ani-dae11-eyD-hold-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1709951Z 
2026-05-13T13:10:48.1710531Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1710972Z 
2026-05-13T13:10:48.1711952Z   3) [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-13T13:10:48.1713379Z 
2026-05-13T13:10:48.1713721Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-13T13:10:48.1714122Z 
2026-05-13T13:10:48.1714828Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1715401Z 
2026-05-13T13:10:48.1715613Z     Expected: > [32m15[39m
2026-05-13T13:10:48.1716119Z     Received:   [31m0[39m
2026-05-13T13:10:48.1716348Z 
2026-05-13T13:10:48.1716615Z       83 |     (after as number) - (before as number),
2026-05-13T13:10:48.1717315Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-13T13:10:48.1717892Z     > 85 |   ).toBeGreaterThan(15);
2026-05-13T13:10:48.1718281Z          |     ^
2026-05-13T13:10:48.1718574Z       86 | });
2026-05-13T13:10:48.1718854Z       87 |
2026-05-13T13:10:48.1719482Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-13T13:10:48.1720303Z 
2026-05-13T13:10:48.1720979Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1722126Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-13T13:10:48.1723609Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1724056Z 
2026-05-13T13:10:48.1724666Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1725740Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/video.webm
2026-05-13T13:10:48.1726917Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1727356Z 
2026-05-13T13:10:48.1728070Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-13T13:10:48.1728840Z 
2026-05-13T13:10:48.1729501Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1748853Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1749584Z     Usage:
2026-05-13T13:10:48.1749751Z 
2026-05-13T13:10:48.1750532Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1751310Z 
2026-05-13T13:10:48.1751984Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1752654Z 
2026-05-13T13:10:48.1753247Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1753665Z 
2026-05-13T13:10:48.1753945Z     Error: Camera scrollX did not advance: before=120 after=120
2026-05-13T13:10:48.1754311Z 
2026-05-13T13:10:48.1755278Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1755821Z 
2026-05-13T13:10:48.1756026Z     Expected: > [32m15[39m
2026-05-13T13:10:48.1756460Z     Received:   [31m0[39m
2026-05-13T13:10:48.1756695Z 
2026-05-13T13:10:48.1756933Z       83 |     (after as number) - (before as number),
2026-05-13T13:10:48.1757625Z       84 |     `Camera scrollX did not advance: before=${before} after=${after}`,
2026-05-13T13:10:48.1758387Z     > 85 |   ).toBeGreaterThan(15);
2026-05-13T13:10:48.1758777Z          |     ^
2026-05-13T13:10:48.1759046Z       86 | });
2026-05-13T13:10:48.1759324Z       87 |
2026-05-13T13:10:48.1759952Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-camera.e2e.test.ts:85:5
2026-05-13T13:10:48.1760478Z 
2026-05-13T13:10:48.1761200Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1762655Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1764164Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1764589Z 
2026-05-13T13:10:48.1765138Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1766249Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-13T13:10:48.1767516Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1767965Z 
2026-05-13T13:10:48.1768746Z     Error Context: test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-13T13:10:48.1769545Z 
2026-05-13T13:10:48.1770231Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1771401Z     test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1772258Z     Usage:
2026-05-13T13:10:48.1772757Z 
2026-05-13T13:10:48.1773575Z         pnpm exec playwright show-trace test-results/cli-08-camera.e2e-CLI-08-c-29d96--scrollX-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1774402Z 
2026-05-13T13:10:48.1775043Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1775469Z 
2026-05-13T13:10:48.1776300Z   4) [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:29:1 › floor tiles render and block southern fall-through 
2026-05-13T13:10:48.1776960Z 
2026-05-13T13:10:48.1777619Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeLessThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1778189Z 
2026-05-13T13:10:48.1778399Z     Expected: < [32m850[39m
2026-05-13T13:10:48.1778843Z     Received:   [31m920[39m
2026-05-13T13:10:48.1779083Z 
2026-05-13T13:10:48.1779875Z        98 |   const ROOM_HEIGHT_PX = 800; // 20 × 40 px (CLAUDE.md Extracted Constants)
2026-05-13T13:10:48.1780704Z        99 |   const FALL_THROUGH_GUARD = ROOM_HEIGHT_PX + 50; // one tile of tolerance
2026-05-13T13:10:48.1781465Z     > 100 |   expect(finalY).toBeLessThan(FALL_THROUGH_GUARD);
2026-05-13T13:10:48.1781962Z           |                  ^
2026-05-13T13:10:48.1782294Z       101 | });
2026-05-13T13:10:48.1782820Z       102 |
2026-05-13T13:10:48.1783516Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:100:18
2026-05-13T13:10:48.1784100Z 
2026-05-13T13:10:48.1784796Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1785922Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium/test-failed-1.png
2026-05-13T13:10:48.1787148Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1787793Z 
2026-05-13T13:10:48.1788429Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1789529Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium/video.webm
2026-05-13T13:10:48.1790753Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1791198Z 
2026-05-13T13:10:48.1791927Z     Error Context: test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium/error-context.md
2026-05-13T13:10:48.1792871Z 
2026-05-13T13:10:48.1793501Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1794623Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium/trace.zip
2026-05-13T13:10:48.1795393Z     Usage:
2026-05-13T13:10:48.1795552Z 
2026-05-13T13:10:48.1796320Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium/trace.zip
2026-05-13T13:10:48.1797162Z 
2026-05-13T13:10:48.1797775Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1798215Z 
2026-05-13T13:10:48.1798795Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1799245Z 
2026-05-13T13:10:48.1799798Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-13T13:10:48.1800293Z 
2026-05-13T13:10:48.1800544Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-13T13:10:48.1801013Z     Expected: visible
2026-05-13T13:10:48.1801350Z     Timeout: 15000ms
2026-05-13T13:10:48.1801697Z     Error: element(s) not found
2026-05-13T13:10:48.1801928Z 
2026-05-13T13:10:48.1802052Z     Call log:
2026-05-13T13:10:48.1802770Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-13T13:10:48.1803509Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-13T13:10:48.1804132Z 
2026-05-13T13:10:48.1804142Z 
2026-05-13T13:10:48.1804279Z        at fixtures.ts:172
2026-05-13T13:10:48.1804499Z 
2026-05-13T13:10:48.1804617Z       170 |  */
2026-05-13T13:10:48.1805160Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-13T13:10:48.1806015Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-13T13:10:48.1806744Z           |                                                                ^
2026-05-13T13:10:48.1807231Z       173 |     timeout: 15_000,
2026-05-13T13:10:48.1807579Z       174 |   });
2026-05-13T13:10:48.1807859Z       175 | }
2026-05-13T13:10:48.1808529Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-13T13:10:48.1809629Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-floor-collision.e2e.test.ts:35:9
2026-05-13T13:10:48.1810207Z 
2026-05-13T13:10:48.1811025Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1812276Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1813719Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1814163Z 
2026-05-13T13:10:48.1814764Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1815954Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium-retry1/video.webm
2026-05-13T13:10:48.1817266Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1817690Z 
2026-05-13T13:10:48.1818444Z     Error Context: test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium-retry1/error-context.md
2026-05-13T13:10:48.1819282Z 
2026-05-13T13:10:48.1819892Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1821003Z     test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium-retry1/trace.zip
2026-05-13T13:10:48.1821808Z     Usage:
2026-05-13T13:10:48.1821962Z 
2026-05-13T13:10:48.1822961Z         pnpm exec playwright show-trace test-results/cli-08-floor-collision.e2e-ffbae-block-southern-fall-through-chromium-retry1/trace.zip
2026-05-13T13:10:48.1823822Z 
2026-05-13T13:10:48.1824390Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1824807Z 
2026-05-13T13:10:48.1825729Z   5) [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-13T13:10:48.1826486Z 
2026-05-13T13:10:48.1830640Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-13T13:10:48.1834305Z 
2026-05-13T13:10:48.1835015Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1835617Z 
2026-05-13T13:10:48.1835812Z     Expected: >= [32m3[39m
2026-05-13T13:10:48.1836220Z     Received:    [31m1[39m
2026-05-13T13:10:48.1836441Z 
2026-05-13T13:10:48.1836776Z       76 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-13T13:10:48.1837885Z       77 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-13T13:10:48.1838916Z     > 78 |   ).toBeGreaterThanOrEqual(3);
2026-05-13T13:10:48.1839320Z          |     ^
2026-05-13T13:10:48.1839605Z       79 |
2026-05-13T13:10:48.1840378Z       80 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-13T13:10:48.1841260Z       81 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-13T13:10:48.1842181Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:78:5
2026-05-13T13:10:48.1842935Z 
2026-05-13T13:10:48.1843592Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1844758Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/test-failed-1.png
2026-05-13T13:10:48.1846010Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1846503Z 
2026-05-13T13:10:48.1847119Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1848189Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/video.webm
2026-05-13T13:10:48.1849385Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1849832Z 
2026-05-13T13:10:48.1850532Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/error-context.md
2026-05-13T13:10:48.1851289Z 
2026-05-13T13:10:48.1851914Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1853146Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-13T13:10:48.1853893Z     Usage:
2026-05-13T13:10:48.1854056Z 
2026-05-13T13:10:48.1854838Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium/trace.zip
2026-05-13T13:10:48.1855711Z 
2026-05-13T13:10:48.1856290Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1856731Z 
2026-05-13T13:10:48.1857304Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1857754Z 
2026-05-13T13:10:48.1862138Z     Error: D-41 regression: expected ≥3 distinct localFrame keys during 1s KeyD hold; observed 1 (samples=[0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000,0000-NaviStandD_000]). Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.
2026-05-13T13:10:48.1866133Z 
2026-05-13T13:10:48.1866851Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThanOrEqual[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1867469Z 
2026-05-13T13:10:48.1867665Z     Expected: >= [32m3[39m
2026-05-13T13:10:48.1868075Z     Received:    [31m1[39m
2026-05-13T13:10:48.1868294Z 
2026-05-13T13:10:48.1868648Z       76 |       `observed ${unique.size} (samples=[${samples.join(',')}]). ` +
2026-05-13T13:10:48.1869763Z       77 |       `Symptom: Stand frame perma-lock — check axisX/axisY wiring in GameScene.update() while-loop.`,
2026-05-13T13:10:48.1870568Z     > 78 |   ).toBeGreaterThanOrEqual(3);
2026-05-13T13:10:48.1870971Z          |     ^
2026-05-13T13:10:48.1871254Z       79 |
2026-05-13T13:10:48.1872055Z       80 |   // 5. At least one observed frame key must contain 'Run' — confirms we left Stand state.
2026-05-13T13:10:48.1873089Z       81 |   const hasRunFrame = [...unique].some((f) => f.includes('Run'));
2026-05-13T13:10:48.1874052Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-local-anim.e2e.test.ts:78:5
2026-05-13T13:10:48.1874630Z 
2026-05-13T13:10:48.1875276Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1876509Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1877825Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1878274Z 
2026-05-13T13:10:48.1878889Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1880007Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/video.webm
2026-05-13T13:10:48.1881246Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1881740Z 
2026-05-13T13:10:48.1882720Z     Error Context: test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/error-context.md
2026-05-13T13:10:48.1883536Z 
2026-05-13T13:10:48.1884239Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1885379Z     test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1886170Z     Usage:
2026-05-13T13:10:48.1886332Z 
2026-05-13T13:10:48.1887172Z         pnpm exec playwright show-trace test-results/cli-08-local-anim.e2e-loca-e72c5--D-41-anti-recurrence-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1888049Z 
2026-05-13T13:10:48.1888616Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1889062Z 
2026-05-13T13:10:48.1889984Z   6) [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-13T13:10:48.1891140Z 
2026-05-13T13:10:48.1891708Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-13T13:10:48.1892174Z 
2026-05-13T13:10:48.1892575Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-13T13:10:48.1893013Z     Expected: visible
2026-05-13T13:10:48.1893396Z     Timeout: 15000ms
2026-05-13T13:10:48.1893794Z     Error: element(s) not found
2026-05-13T13:10:48.1894052Z 
2026-05-13T13:10:48.1894197Z     Call log:
2026-05-13T13:10:48.1894749Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-13T13:10:48.1895496Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-13T13:10:48.1895915Z 
2026-05-13T13:10:48.1895925Z 
2026-05-13T13:10:48.1896058Z        at fixtures.ts:172
2026-05-13T13:10:48.1896282Z 
2026-05-13T13:10:48.1896395Z       170 |  */
2026-05-13T13:10:48.1896952Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-13T13:10:48.1897866Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-13T13:10:48.1898697Z           |                                                                ^
2026-05-13T13:10:48.1899224Z       173 |     timeout: 15_000,
2026-05-13T13:10:48.1899577Z       174 |   });
2026-05-13T13:10:48.1899884Z       175 | }
2026-05-13T13:10:48.1900590Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-13T13:10:48.1901636Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:32:9
2026-05-13T13:10:48.1902181Z 
2026-05-13T13:10:48.1903047Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1904215Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/test-failed-1.png
2026-05-13T13:10:48.1905545Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1906054Z 
2026-05-13T13:10:48.1906712Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1907761Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/video.webm
2026-05-13T13:10:48.1908963Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1909421Z 
2026-05-13T13:10:48.1910124Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/error-context.md
2026-05-13T13:10:48.1910935Z 
2026-05-13T13:10:48.1911595Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1912959Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1913703Z     Usage:
2026-05-13T13:10:48.1913869Z 
2026-05-13T13:10:48.1914658Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium/trace.zip
2026-05-13T13:10:48.1915978Z 
2026-05-13T13:10:48.1916566Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1917024Z 
2026-05-13T13:10:48.1917567Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1917966Z 
2026-05-13T13:10:48.1918544Z     Error: RoomRenderer.renderNew must emit floor tile sprites for mvp-room (D-40 verify-bail flip / Plan 06.1-05)
2026-05-13T13:10:48.1919224Z 
2026-05-13T13:10:48.1919869Z     [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1920418Z 
2026-05-13T13:10:48.1920598Z     Expected: > [32m0[39m
2026-05-13T13:10:48.1920964Z     Received:   [31m0[39m
2026-05-13T13:10:48.1921177Z 
2026-05-13T13:10:48.1921293Z     Call Log:
2026-05-13T13:10:48.1921748Z     - Timeout 15000ms exceeded while waiting on the predicate
2026-05-13T13:10:48.1922159Z 
2026-05-13T13:10:48.1922803Z       55 |   //    once RoomRenderer.renderNew (Plan 06.1-05) has placed at least one tile
2026-05-13T13:10:48.1923617Z       56 |   //    via group.add(). mvp-room ships 324 tiles, so any positive count clears.
2026-05-13T13:10:48.1924120Z     > 57 |   await expect
2026-05-13T13:10:48.1924429Z          |   ^
2026-05-13T13:10:48.1924713Z       58 |     .poll(
2026-05-13T13:10:48.1925039Z       59 |       async () =>
2026-05-13T13:10:48.1925412Z       60 |         page.evaluate(
2026-05-13T13:10:48.1926064Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08-tiles.e2e.test.ts:57:3
2026-05-13T13:10:48.1926560Z 
2026-05-13T13:10:48.1927212Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1928396Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1929662Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1930815Z 
2026-05-13T13:10:48.1931425Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1932634Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/video.webm
2026-05-13T13:10:48.1933917Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1934374Z 
2026-05-13T13:10:48.1935137Z     Error Context: test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/error-context.md
2026-05-13T13:10:48.1935743Z 
2026-05-13T13:10:48.1936140Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1936829Z     test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1937721Z     Usage:
2026-05-13T13:10:48.1937831Z 
2026-05-13T13:10:48.1938338Z         pnpm exec playwright show-trace test-results/cli-08-tiles.e2e-CLI-08-ti-2c8e9-e1-sides-Wave-4-GREEN-gate--chromium-retry1/trace.zip
2026-05-13T13:10:48.1938839Z 
2026-05-13T13:10:48.1939204Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1939478Z 
2026-05-13T13:10:48.1940053Z   7) [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-13T13:10:48.1940521Z 
2026-05-13T13:10:48.1940944Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1941304Z 
2026-05-13T13:10:48.1941444Z     Expected: > [32m470[39m
2026-05-13T13:10:48.1941721Z     Received:   [31m440[39m
2026-05-13T13:10:48.1941862Z 
2026-05-13T13:10:48.1942008Z       78 |       .getAttribute('data-x-coord');
2026-05-13T13:10:48.1942723Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-13T13:10:48.1943575Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-13T13:10:48.1944224Z          |                    ^
2026-05-13T13:10:48.1944546Z       81 |
2026-05-13T13:10:48.1945103Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-13T13:10:48.1945939Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-13T13:10:48.1946788Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-13T13:10:48.1947315Z 
2026-05-13T13:10:48.1947936Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1948999Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-1.png
2026-05-13T13:10:48.1950118Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1950568Z 
2026-05-13T13:10:48.1951117Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1952162Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/test-failed-2.png
2026-05-13T13:10:48.1953592Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1954002Z 
2026-05-13T13:10:48.1954661Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/error-context.md
2026-05-13T13:10:48.1955353Z 
2026-05-13T13:10:48.1955946Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.1956945Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-13T13:10:48.1957615Z     Usage:
2026-05-13T13:10:48.1957768Z 
2026-05-13T13:10:48.1958888Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium/trace.zip
2026-05-13T13:10:48.1959639Z 
2026-05-13T13:10:48.1960164Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1960575Z 
2026-05-13T13:10:48.1961101Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.1961521Z 
2026-05-13T13:10:48.1962138Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBeGreaterThan[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.1962856Z 
2026-05-13T13:10:48.1963048Z     Expected: > [32m470[39m
2026-05-13T13:10:48.1963459Z     Received:   [31m440[39m
2026-05-13T13:10:48.1963666Z 
2026-05-13T13:10:48.1963870Z       78 |       .getAttribute('data-x-coord');
2026-05-13T13:10:48.1964380Z       79 |     const afterX = Number(afterXStr ?? '0');
2026-05-13T13:10:48.1965260Z     > 80 |     expect(afterX).toBeGreaterThan(beforeX + 30); // ≥30 px movement; conservative.
2026-05-13T13:10:48.1965970Z          |                    ^
2026-05-13T13:10:48.1966304Z       81 |
2026-05-13T13:10:48.1966844Z       82 |     // (4) Chat round-trip. A presses Enter to focus chat, types, Enter to send.
2026-05-13T13:10:48.1967626Z       83 |     //     B sees a `.chat-line` matching `<sender>: <text>` within 5s.
2026-05-13T13:10:48.1968515Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cli-08.e2e.test.ts:80:20
2026-05-13T13:10:48.1969041Z 
2026-05-13T13:10:48.1969727Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.1970954Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.1972268Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2003124Z 
2026-05-13T13:10:48.2003893Z     attachment #2: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2005124Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/test-failed-2.png
2026-05-13T13:10:48.2006424Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2006857Z 
2026-05-13T13:10:48.2007608Z     Error Context: test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/error-context.md
2026-05-13T13:10:48.2008384Z 
2026-05-13T13:10:48.2009025Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2010094Z     test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-13T13:10:48.2010809Z     Usage:
2026-05-13T13:10:48.2010966Z 
2026-05-13T13:10:48.2011747Z         pnpm exec playwright show-trace test-results/cli-08.e2e-CLI-08-hard-mil-38a87--round-trip-reconnect-grace-chromium-retry1/trace.zip
2026-05-13T13:10:48.2023294Z 
2026-05-13T13:10:48.2023929Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2024381Z 
2026-05-13T13:10:48.2025294Z   8) [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-13T13:10:48.2026042Z 
2026-05-13T13:10:48.2026765Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-13T13:10:48.2027375Z 
2026-05-13T13:10:48.2027670Z     Expected: [32m"mvp-room"[39m
2026-05-13T13:10:48.2028180Z     Received: [31m""[39m
2026-05-13T13:10:48.2028411Z 
2026-05-13T13:10:48.2028805Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-13T13:10:48.2029386Z       43 |   );
2026-05-13T13:10:48.2029800Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-13T13:10:48.2030317Z          |                            ^
2026-05-13T13:10:48.2030683Z       45 |
2026-05-13T13:10:48.2031077Z       46 |   const loadedTextures = await page.evaluate(
2026-05-13T13:10:48.2031520Z       47 |     () =>
2026-05-13T13:10:48.2032176Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-13T13:10:48.2032900Z 
2026-05-13T13:10:48.2033542Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2034691Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/test-failed-1.png
2026-05-13T13:10:48.2035909Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2036331Z 
2026-05-13T13:10:48.2036929Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2038030Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/video.webm
2026-05-13T13:10:48.2039233Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2039653Z 
2026-05-13T13:10:48.2040375Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/error-context.md
2026-05-13T13:10:48.2041124Z 
2026-05-13T13:10:48.2041771Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2083098Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-13T13:10:48.2083876Z     Usage:
2026-05-13T13:10:48.2084033Z 
2026-05-13T13:10:48.2084835Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium/trace.zip
2026-05-13T13:10:48.2085662Z 
2026-05-13T13:10:48.2086258Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2087155Z 
2026-05-13T13:10:48.2087717Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2088162Z 
2026-05-13T13:10:48.2088884Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-05-13T13:10:48.2089497Z 
2026-05-13T13:10:48.2089747Z     Expected: [32m"mvp-room"[39m
2026-05-13T13:10:48.2090173Z     Received: [31m""[39m
2026-05-13T13:10:48.2090386Z 
2026-05-13T13:10:48.2090783Z       42 |     () => (window as unknown as { __rebno?: { roomId?: string } }).__rebno?.roomId,
2026-05-13T13:10:48.2091358Z       43 |   );
2026-05-13T13:10:48.2091771Z     > 44 |   expect(postReloadRoomId).toBe('mvp-room');
2026-05-13T13:10:48.2092259Z          |                            ^
2026-05-13T13:10:48.2092767Z       45 |
2026-05-13T13:10:48.2093170Z       46 |   const loadedTextures = await page.evaluate(
2026-05-13T13:10:48.2093658Z       47 |     () =>
2026-05-13T13:10:48.2094307Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/cookie-reload.e2e.test.ts:44:28
2026-05-13T13:10:48.2094835Z 
2026-05-13T13:10:48.2095467Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2096666Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.2097890Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2098354Z 
2026-05-13T13:10:48.2098976Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2100158Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/video.webm
2026-05-13T13:10:48.2101444Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2101953Z 
2026-05-13T13:10:48.2161272Z     Error Context: test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/error-context.md
2026-05-13T13:10:48.2162183Z 
2026-05-13T13:10:48.2163006Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2164187Z     test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-13T13:10:48.2164979Z     Usage:
2026-05-13T13:10:48.2165140Z 
2026-05-13T13:10:48.2165966Z         pnpm exec playwright show-trace test-results/cookie-reload.e2e-Cookie-a-decbf-enders-within-5s-chat-works-chromium-retry1/trace.zip
2026-05-13T13:10:48.2166835Z 
2026-05-13T13:10:48.2167391Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2167830Z 
2026-05-13T13:10:48.2168737Z   9) [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-13T13:10:48.2169986Z 
2026-05-13T13:10:48.2170542Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-13T13:10:48.2171044Z 
2026-05-13T13:10:48.2171354Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-13T13:10:48.2171858Z     Expected: visible
2026-05-13T13:10:48.2172164Z     Timeout: 5000ms
2026-05-13T13:10:48.2172660Z     Error: element(s) not found
2026-05-13T13:10:48.2172900Z 
2026-05-13T13:10:48.2173016Z     Call log:
2026-05-13T13:10:48.2173492Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-13T13:10:48.2174275Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-13T13:10:48.2174741Z 
2026-05-13T13:10:48.2174751Z 
2026-05-13T13:10:48.2174872Z       36 |
2026-05-13T13:10:48.2175391Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-13T13:10:48.2176302Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-13T13:10:48.2177108Z          |                                                                           ^
2026-05-13T13:10:48.2177611Z       39 |       timeout: 5_000,
2026-05-13T13:10:48.2177975Z       40 |     });
2026-05-13T13:10:48.2178248Z       41 |
2026-05-13T13:10:48.2178795Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-13T13:10:48.2179286Z 
2026-05-13T13:10:48.2179899Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2181044Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/test-failed-1.png
2026-05-13T13:10:48.2182244Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2242924Z 
2026-05-13T13:10:48.2243596Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2244709Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/video.webm
2026-05-13T13:10:48.2245865Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2246279Z 
2026-05-13T13:10:48.2246952Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/error-context.md
2026-05-13T13:10:48.2247714Z 
2026-05-13T13:10:48.2248309Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2249365Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-13T13:10:48.2250101Z     Usage:
2026-05-13T13:10:48.2250266Z 
2026-05-13T13:10:48.2251056Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium/trace.zip
2026-05-13T13:10:48.2251895Z 
2026-05-13T13:10:48.2252672Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2253591Z 
2026-05-13T13:10:48.2254149Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2254582Z 
2026-05-13T13:10:48.2255121Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-13T13:10:48.2255608Z 
2026-05-13T13:10:48.2255903Z     Locator: locator('form#login-form, #login-form, #username')
2026-05-13T13:10:48.2256383Z     Expected: visible
2026-05-13T13:10:48.2256688Z     Timeout: 5000ms
2026-05-13T13:10:48.2257011Z     Error: element(s) not found
2026-05-13T13:10:48.2257234Z 
2026-05-13T13:10:48.2257342Z     Call log:
2026-05-13T13:10:48.2257829Z     [2m  - Expect "toBeVisible" with timeout 5000ms[22m
2026-05-13T13:10:48.2258587Z     [2m  - waiting for locator('form#login-form, #login-form, #username')[22m
2026-05-13T13:10:48.2259037Z 
2026-05-13T13:10:48.2259046Z 
2026-05-13T13:10:48.2259197Z       36 |
2026-05-13T13:10:48.2259677Z       37 |     // Should navigate back to LoginScene (login form heading visible)
2026-05-13T13:10:48.2260575Z     > 38 |     await expect(page.locator('form#login-form, #login-form, #username')).toBeVisible({
2026-05-13T13:10:48.2261315Z          |                                                                           ^
2026-05-13T13:10:48.2261807Z       39 |       timeout: 5_000,
2026-05-13T13:10:48.2262135Z       40 |     });
2026-05-13T13:10:48.2282584Z       41 |
2026-05-13T13:10:48.2283262Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/logout.e2e.test.ts:38:75
2026-05-13T13:10:48.2283782Z 
2026-05-13T13:10:48.2284416Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2285581Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.2286932Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2287420Z 
2026-05-13T13:10:48.2288038Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2289204Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/video.webm
2026-05-13T13:10:48.2290488Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2290937Z 
2026-05-13T13:10:48.2291589Z     Error Context: test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/error-context.md
2026-05-13T13:10:48.2292262Z 
2026-05-13T13:10:48.2293013Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2294031Z     test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-13T13:10:48.2294772Z     Usage:
2026-05-13T13:10:48.2295476Z 
2026-05-13T13:10:48.2296341Z         pnpm exec playwright show-trace test-results/logout.e2e-Esc-menu-Esc-op-3ce00-eared-session-cookies-D-34--chromium-retry1/trace.zip
2026-05-13T13:10:48.2297220Z 
2026-05-13T13:10:48.2297835Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2298283Z 
2026-05-13T13:10:48.2299635Z   10) [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-13T13:10:48.2300720Z 
2026-05-13T13:10:48.2301361Z     Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoMatch[2m([22m[32mexpected[39m[2m)[22m
2026-05-13T13:10:48.2301917Z 
2026-05-13T13:10:48.2302264Z     Expected pattern: [32m/^0028-NaviRunR_\d{3}$/[39m
2026-05-13T13:10:48.2303244Z     Received string:  [31m"0000-NaviStandD_000"[39m
2026-05-13T13:10:48.2303585Z 
2026-05-13T13:10:48.2303704Z       32 |
2026-05-13T13:10:48.2304211Z       33 |     // Frame key must match Run R pattern: '0028-NaviRunR_NNN'
2026-05-13T13:10:48.2304939Z     > 34 |     expect(frameWhileRunning).toMatch(/^0028-NaviRunR_\d{3}$/);
2026-05-13T13:10:48.2305586Z          |                               ^
2026-05-13T13:10:48.2306033Z       35 |
2026-05-13T13:10:48.2306487Z       36 |     // Release right arrow and wait for stop
2026-05-13T13:10:48.2307080Z       37 |     await page.keyboard.up('ArrowRight');
2026-05-13T13:10:48.2307892Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:34:31
2026-05-13T13:10:48.2308437Z 
2026-05-13T13:10:48.2309091Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.2310280Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/test-failed-1.png
2026-05-13T13:10:48.2311628Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2312127Z 
2026-05-13T13:10:48.2312918Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2314419Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/video.webm
2026-05-13T13:10:48.2315680Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2316123Z 
2026-05-13T13:10:48.2316851Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/error-context.md
2026-05-13T13:10:48.2317679Z 
2026-05-13T13:10:48.2318359Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.2319519Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-13T13:10:48.2320291Z     Usage:
2026-05-13T13:10:48.2320448Z 
2026-05-13T13:10:48.2321258Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium/trace.zip
2026-05-13T13:10:48.2330794Z 
2026-05-13T13:10:48.2331516Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2331982Z 
2026-05-13T13:10:48.2332768Z     Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.2333244Z 
2026-05-13T13:10:48.2333821Z     Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-05-13T13:10:48.2334341Z 
2026-05-13T13:10:48.2334604Z     Locator: locator('canvas[data-game-ready="true"]')
2026-05-13T13:10:48.2335092Z     Expected: visible
2026-05-13T13:10:48.2335434Z     Timeout: 15000ms
2026-05-13T13:10:48.2335802Z     Error: element(s) not found
2026-05-13T13:10:48.2336050Z 
2026-05-13T13:10:48.2336174Z     Call log:
2026-05-13T13:10:48.2336725Z     [2m  - Expect "toBeVisible" with timeout 15000ms[22m
2026-05-13T13:10:48.2338038Z     [2m  - waiting for locator('canvas[data-game-ready="true"]')[22m
2026-05-13T13:10:48.2338460Z 
2026-05-13T13:10:48.2338471Z 
2026-05-13T13:10:48.2338621Z        at fixtures.ts:172
2026-05-13T13:10:48.2338850Z 
2026-05-13T13:10:48.2338979Z       170 |  */
2026-05-13T13:10:48.2339563Z       171 | export async function waitForGameReady(page: Page): Promise<void> {
2026-05-13T13:10:48.2340470Z     > 172 |   await expect(page.locator('canvas[data-game-ready="true"]')).toBeVisible({
2026-05-13T13:10:48.2341227Z           |                                                                ^
2026-05-13T13:10:48.2341736Z       173 |     timeout: 15_000,
2026-05-13T13:10:48.2342106Z       174 |   });
2026-05-13T13:10:48.2342568Z       175 | }
2026-05-13T13:10:48.2343275Z         at waitForGameReady (/home/runner/work/rebno/rebno/apps/client/test/e2e/fixtures.ts:172:64)
2026-05-13T13:10:48.5924028Z         at /home/runner/work/rebno/rebno/apps/client/test/e2e/sprite-state.e2e.test.ts:22:11
2026-05-13T13:10:48.5924616Z 
2026-05-13T13:10:48.5925303Z     attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-05-13T13:10:48.5926104Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/test-failed-1.png
2026-05-13T13:10:48.5926922Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.5927222Z 
2026-05-13T13:10:48.5927601Z     attachment #2: video (video/webm) ──────────────────────────────────────────────────────────────
2026-05-13T13:10:48.5928330Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/video.webm
2026-05-13T13:10:48.5929102Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.5929375Z 
2026-05-13T13:10:48.5929847Z     Error Context: test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/error-context.md
2026-05-13T13:10:48.5930945Z 
2026-05-13T13:10:48.5931345Z     attachment #4: trace (application/zip) ─────────────────────────────────────────────────────────
2026-05-13T13:10:48.5932065Z     test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-13T13:10:48.5932876Z     Usage:
2026-05-13T13:10:48.5933039Z 
2026-05-13T13:10:48.5933883Z         pnpm exec playwright show-trace test-results/sprite-state.e2e-sprite-st-8eb1f-ement-back-to-Stand-on-stop-chromium-retry1/trace.zip
2026-05-13T13:10:48.5934748Z 
2026-05-13T13:10:48.5935369Z     ────────────────────────────────────────────────────────────────────────────────────────────────
2026-05-13T13:10:48.5935808Z 
2026-05-13T13:10:48.5936914Z   10 failed
2026-05-13T13:10:48.5964474Z     [chromium] › test/e2e/camera-follow.e2e.test.ts:18:1 › Camera follow: walking toward room edge pans the camera (D-29 mandatory) 
2026-05-13T13:10:48.5974414Z     [chromium] › test/e2e/cli-08-anim.e2e.test.ts:32:1 › CLI-08 anim — local sprite advances ≥3 distinct frames during 1s KeyD hold (Wave 4 GREEN gate) 
2026-05-13T13:10:48.5976078Z     [chromium] › test/e2e/cli-08-camera.e2e.test.ts:29:1 › CLI-08 camera follow — pressing KeyD for 300ms pans camera scrollX (Wave 4 GREEN gate) 
2026-05-13T13:10:48.5977828Z     [chromium] › test/e2e/cli-08-floor-collision.e2e.test.ts:29:1 › floor tiles render and block southern fall-through 
2026-05-13T13:10:48.5979580Z     [chromium] › test/e2e/cli-08-local-anim.e2e.test.ts:25:1 › local sprite cycles frames during held-key input (D-41 anti-recurrence gate) 
2026-05-13T13:10:48.5981362Z     [chromium] › test/e2e/cli-08-tiles.e2e.test.ts:26:1 › CLI-08 tiles — RoomRenderer emits floor tiles + TSide1 sides (Wave 4 GREEN gate) 
2026-05-13T13:10:48.5983458Z     [chromium] › test/e2e/cli-08.e2e.test.ts:22:1 › CLI-08 hard milestone — two clients see each other move + chat round-trip + reconnect grace 
2026-05-13T13:10:48.5985359Z     [chromium] › test/e2e/cookie-reload.e2e.test.ts:15:1 › Cookie auto-login: login → reload → GameScene re-renders within 5s + chat works 
2026-05-13T13:10:48.5987216Z     [chromium] › test/e2e/logout.e2e.test.ts:18:3 › Esc menu › Esc opens menu; Logout returns to LoginScene with cleared session cookies (D-34) 
2026-05-13T13:10:48.5989426Z     [chromium] › test/e2e/sprite-state.e2e.test.ts:16:3 › sprite-state machine (D-35) + nametag (D-27a) › player sprite frame switches to Run<R> on rightward movement, back to Stand on stop 
2026-05-13T13:10:48.5990734Z   14 passed (5.8m)
2026-05-13T13:10:48.6418249Z /home/runner/work/rebno/rebno/apps/client:
2026-05-13T13:10:48.6419880Z  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  @rebno/client@0.1.0 test:e2e: `playwright test`
2026-05-13T13:10:48.6420815Z Exit status 1
2026-05-13T13:10:48.6618839Z ##[error]Process completed with exit code 1.
